package 每日签到;

/**
 * @author 陈艺博
 * @date 2021-02-28 23:00
 * @description https://leetcode-cn.com/problems/monotonic-array/
 **/
public class _896_monotonic_array_单调数列 {
    /**
     * 通过一次遍历， 检测是否同时有递增递减
     */
    public boolean isMonotonic(int[] a) {
        boolean asc = true, dec = true;
        for (int i = 0; i < a.length - 1; i++) {
            // 5 4 3 2 1 降序
            if (a[i] > a[i + 1]) {
                asc = false;
            }
            // 1 2 3 4 5 升序
            if (a[i] < a[i + 1]) {
                dec = false;
            }

            // 有升有降 返回false
            if(!asc && !dec){
                return false;
            }
        }
        // 不是升序，就是降序
        return true;
    }

    /**
     * 使用两次循环， 分别检测是否 递增或递减， 使用break跳出循环加快运行时间
     */
    public boolean isMonotonic1(int[] A) {
        boolean ret1 = true;
        boolean ret2 = true;
        for (int i = 0; i < A.length - 1; i++) {
            if (A[i] < A[i + 1]) {
                ret1 = false;
                break;
            }
        }
        for (int i = 0; i < A.length - 1; i++) {
            if (A[i] > A[i + 1]) {
                ret2 = false;
                break;
            }
        }

        return ret1 || ret2;

    }
}
